package v8.Class_Output_Stream is
   type Output_Stream is limited interface;
   type Pointer is access all Output_Stream'Class;

   procedure Destroy (this : in out Output_Stream) is abstract;
   -- virtual destructor

   procedure Free (this : access Output_Stream) is abstract;
   -- virtual operator delete

   procedure End_Of_Stream (this : in out Output_Stream) is abstract;
   -- Notify about the end of stream.

   function Get_Chunk_Size (this : in out Output_Stream) return int is abstract;
   -- Get preferred output chunk size. Called only once.

   function Get_Output_Encoding
     (this : in out Output_Stream
     ) return Output_Stream_Output_Encoding.Enum is abstract;
   -- Get preferred output encoding. Called only once.

   function Write_Ascii_Chunk
     (this : in out Output_Stream;
      data : chars_ptr;
      size : int
     ) return Output_Stream_Write_Result.Enum is abstract;
   -- Writes the next chunk of snapshot data into the stream. Writing
   -- can be stopped by returning kAbort as function result. EndOfStream
   -- will not be called in case writing was aborted.

end v8.Class_Output_Stream;
